# -*- coding: utf-8 -*-

'''
    【简介】
	PySide6中 QLineEdit的验证器QValidator例子
  
'''

import sys
from PySide6.QtWidgets import (QApplication,
                               QWidget,
                               QFormLayout,
                               QLineEdit)

from PySide6.QtGui import QIntValidator,QDoubleValidator,QRegularExpressionValidator
from PySide6.QtCore import QRegularExpression
                                

# 定义一个名为lineEditDemo的类，继承自QWidget
class lineEditDemo(QWidget):
    # 初始化函数，参数为父类，默认为None
    def __init__ (self,parent=None):
        # 调用父类的初始化函数，传入参数
        super(lineEditDemo,self).__init__(parent)
        # 设置窗口标题
        self.setWindowTitle("QLineEdit例子QValidator")
        
        
        # 创建一个QFormLayout布局
        flo = QFormLayout()
        # 创建一个QLineEdit实例
        pIntLineEdit = QLineEdit()
        pDoubleLineEdit = QLineEdit()
        pValidatorLineEdit = QLineEdit()
        
        
        # 将QLineEdit实例添加到QFormLayout布局中
        flo.addRow("整数:",pIntLineEdit)
        flo.addRow("浮点数:",pDoubleLineEdit)
        flo.addRow("验证器:",pValidatorLineEdit)
        
        # 设置QLineEdit的提示文本
        pIntLineEdit.setPlaceholderText("整数")
        pDoubleLineEdit.setPlaceholderText("浮点数")
        pValidatorLineEdit.setPlaceholderText("验证器")
        
        # 创建一个QIntValidator实例，用于验证输入的整数
        pIntValidator = QIntValidator(self)
        # 设置整数的范围
        pIntValidator.setRange(0,99)
        
        
        pDoubleValidator = QDoubleValidator(self)
        pDoubleValidator.setRange(-360.0, 360.0)
        pDoubleValidator.setNotation(QDoubleValidator.StandardNotation)
        pDoubleValidator.setDecimals(2)
        
        
        pValidator = QRegularExpressionValidator(self)
        pValidator.setRegularExpression(QRegularExpression("[a-zA-Z0-9]+"))
        
        
        # 将QIntValidator实例添加到QLineEdit实例中，用于验证输入的整数
        pIntLineEdit.setValidator(pIntValidator)
        pDoubleLineEdit.setValidator(pDoubleValidator)
        pValidatorLineEdit.setValidator(pValidator)
        
        # 设置布局
        self.setLayout(flo)
        

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = lineEditDemo()
    main.show()
    sys.exit(app.exec())